<?php
//方法修饰符有：static,final,abstract
//static:静态
// class Student{
//     public static $name ="zhangsan";
//     static public function show (){
//         echo "我是一个静态方法";
//     }
// }
// echo Student::$name;
// Student::show();

//统计在线人数
// class Student{
//     private static $num=0;//静态变量，在内存中只有一份
//     public function __construct()
//     {
//         self::$num++;
//     }
//     public function __destruct()
//     {
//         self::$num--;
//     }
//     public function show(){
//         echo "在线人数：".self::$num;
//     }
// }
// $stu1= new Student();
// $stu2= new Student();
// $stu3= new Student();

// $stu3->show();
// unset($stu1);//执行unset（），自动调用销毁函数
// $stu3->show();

//abstract:抽象的
// abstract修饰的方法是抽象方法，修饰的是类
// 只有方法的声明没有方法的实现称为抽象方法
// 一个类中只要有一个方法是抽象方法，这个类必须是抽象类
// 抽象类的特点是不能被实例化
// 子类继承了抽象类，就必须重新实现父类的所有抽象方法，否则不允许实例化
// 类中没有抽象方法也可以声明成抽象类，用来阻止类的实例化
// abstract class Student{
//     public abstract function show();//抽象方法 只有声明 没有实现
// }
// class child extends Student{
//     public function show(){
//         echo "djfh";
//     }
//     public function say(){
//         echo "wosjh";
//     }
// }
// // new child();
// $stu=new child();
// $stu->show();

//接口
//如果一个类中所有的方法都是抽象方法，那么这个抽象类可以声明成接口
//声明接口
interface Student{
    function say();
    function speek();
}
//实现接口
class Child implements Student{
    public function say(){
        echo "ajfdja";
    }
    public function speek(){
        echo "ys";
    } 
}
$stu=new Child();
$stu->say();
$stu->speek();
?>